package com.ruoyi.demo.service;

import java.util.List;
import com.ruoyi.demo.domain.AuctionOrder;
import com.ruoyi.demo.domain.vo.AuctionOrderVO;

/**
 * 订单Service接口
 * 
 * @author metaee
 * @date 2025-02-24
 */
public interface IAuctionOrderService 
{
    /**
     * 查询订单
     * 
     * @param orderId 订单主键
     * @return 订单
     */
    public AuctionOrder selectAuctionOrderByOrderId(Long orderId);

    /**
     * 查询订单（包含额外信息）
     * 
     * @param orderId 订单主键
     * @return 订单VO
     */
    public AuctionOrderVO selectAuctionOrderVOByOrderId(Long orderId);

    /**
     * 查询订单列表
     * 
     * @param auctionOrder 订单
     * @return 订单集合
     */
    public List<AuctionOrder> selectAuctionOrderList(AuctionOrder auctionOrder);

    /**
     * 查询订单列表（包含额外信息）
     * 
     * @param auctionOrder 订单
     * @return 订单VO集合
     */
    public List<AuctionOrderVO> selectAuctionOrderVOList(AuctionOrder auctionOrder);

    /**
     * 新增订单
     * 
     * @param auctionOrder 订单
     * @return 结果
     */
    public int insertAuctionOrder(AuctionOrder auctionOrder);

    /**
     * 修改订单
     * 
     * @param auctionOrder 订单
     * @return 结果
     */
    public int updateAuctionOrder(AuctionOrder auctionOrder);

    /**
     * 批量删除订单
     * 
     * @param orderIds 需要删除的订单主键集合
     * @return 结果
     */
    public int deleteAuctionOrderByOrderIds(Long[] orderIds);

    /**
     * 删除订单信息
     * 
     * @param orderId 订单主键
     * @return 结果
     */
    public int deleteAuctionOrderByOrderId(Long orderId);

    /**
     * 创建成交订单
     *
     * @param goodsId 商品ID
     * @return 结果
     */
    public int createDealOrder(Long goodsId);

    /**
     * 支付订单
     *
     * @param orderId 订单ID
     * @return 结果
     */
    public int payOrder(Long orderId);

    /**
     * 取消订单
     *
     * @param orderId 订单ID
     * @return 结果
     */
    public int cancelOrder(Long orderId);
}
